/* ----------------------------------------------------------------------------
 * Copyright (c) Huawei Technologies Co., Ltd. 2013-2018. All rights reserved.
 * Description: Type define
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 * 1. Redistributions of source code must retain the above copyright notice, this list of
 * conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
 * of conditions and the following disclaimer in the documentation and/or other materials
 * provided with the distribution.
 * 3. Neither the name of the copyright holder nor the names of its contributors may be used
 * to endorse or promote products derived from this software without specific prior written
 * permission.
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * --------------------------------------------------------------------------- */

/**
 * @defgroup los_typedef Type define
 * @ingroup kernel
 */

#ifndef _LOS_TYPEDEF_H
#define _LOS_TYPEDEF_H

#include <stddef.h>
#include <stdbool.h>
#include "los_builddef.h"

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif /* __cplusplus */
#endif /* __cplusplus */

/* type definitions */

typedef unsigned int           UINTPTR ,uintptr_t;
typedef signed int             INTPTR;

typedef unsigned char           u8, uint8_t;
typedef char                    s8;
typedef signed char                int8_t;
typedef unsigned short          u16, uint16_t;
typedef signed short            s16, int16_t;
typedef signed int                int32_t ,intptr_t;
typedef unsigned int            u32, uint32_t;
typedef signed int              s32;
typedef unsigned long long         u64;
typedef u32                        FOURCC;
typedef long long               s64;
typedef unsigned long long      u64, uint64_t;

#define     U8_BIT(n)              ((u8)(1 << (n)))
#define     BIT(n)              (1UL << (n))
#define     BitSET(REG, POS)     ((REG) |= (1L << (POS)))
#define     BitCLR(REG, POS)     ((REG) &= (~(1L<< (POS))))
#define     BitXOR(REG, POS)     ((REG) ^= (~(1L << (POS))))
#define     BitCHK_1(REG, POS)   (((REG) & (1L << (POS))) == (1L << (POS)))
#define     BitCHK_0(REG, POS)   (((REG) & (1L << (POS))) == 0x00)
#define     testBit(REG, POS)    ((REG) & (1L << (POS)))

#ifdef __cplusplus
#if __cplusplus
}
#endif /* __cplusplus */
#endif /* __cplusplus */

#endif /* _LOS_TYPEDEF_H */
